package config

import (
	"os/user"
)

// 全局配置对象
var GlobalConfig *Config

// 获取当前系统用户
var currentUser, _ = user.Current()

// 定义统一配置结构体 用于存储项目的所有配置类型
type Config struct {
	Mysql  *Mysql  `mapstructure:"mysql"`
	Server *Server `mapstructure:"server"`
	Log    *Log    `mapstructure:"log"`
}

// 存储Mysql配置
type Mysql struct {
	Host     string `mapstructure:"host"`
	Port     string `mapstructure:"port"`
	Username string `mapstructure:"username"`
	Password string `mapstructure:"password"`
	Database string `mapstructure:"database"`
}

// 存储服务器启动参数配置
type Server struct {
	IpAddr string `mapstructure:"ip_addr"`
	Port   string `mapstructure:"port"`
}

// 存储日志相关配置结构体
type Log struct {
	FilePath string `mapstructure:"file_path"`
}

// 创建一个默认配置方法 用于给所有配置类型进行缺省的默认配置
func DefaultConfig() {
	GlobalConfig = &Config{
		Mysql: &Mysql{
			Host:     "localhost",
			Port:     "3306",
			Username: "root",
			Password: "123456",
			Database: "test",
		},
		Server: &Server{
			Port:   "8080",
			IpAddr: "localhost",
		},
		Log: &Log{
			// 默认以系统用户目录下的logs目录作为日志文件存储目录
			FilePath: currentUser.HomeDir + "/vblog.log",
		},
	}
}
